Архитектура ОС

Представление и обработка процессов

Структуры данных. Очереди. Планирование

Архитектура ОС

План лекции

1. Понятие процесса

2. Структуры данных для представления процессов

3. Состояния процесса

4. Очереди процессов

5. Алгоритмы планирования процессов

6. Переключение контекста

7. Межпроцессное взаимодействие

8. Потоки (Threads)

Представление и обработка процессов
Архитектура ОС

Введение

Процесс — основная концепция в ОС, представляющая программу во время выполнения. Понимание того, как ОС представляет, управляет и обрабатывает процессы, критически важно для понимания работы операционной системы.

В данной лекции рассматриваются:

  • Структуры данных для представления процессов
  • Механизмы обработки и планирования
  • Роль очередей в управлении процессами
Представление и обработка процессов
Архитектура ОС

1. Понятие процесса

1.1. Определение процесса

Процесс — программа во время выполнения, экземпляр программы в оперативной памяти.

Процесс включает в себя:

  • Код программы
  • Данные программы
  • Стек вызовов
  • Ресурсы ОС (открытые файлы, сетевые соединения)
  • Контекст процесса
Представление и обработка процессов
Архитектура ОС

1.2. Отличие процесса от программы

Программа:

  • Пассивный набор инструкций
  • Хранится на диске
  • Не требует ресурсов CPU
  • Один экземпляр на диске

Процесс:

  • Активное выполнение инструкций
  • Загружен в оперативную память
  • Требует ресурсов CPU и памяти
  • Может иметь несколько экземпляров
Представление и обработка процессов
Архитектура ОС

2. Структуры данных для представления процессов

2.1. Process Control Block (PCB)

PCB — основная структура данных ОС для управления процессом. Содержит всю информацию, необходимую для управления и контроля процесса.

PCB создаётся при порождении процесса и уничтожается при его завершении.

Представление и обработка процессов
Архитектура ОС

Составляющие PCB (1/2)

  • Идентификатор процесса (PID): уникальный номер процесса
  • Состояние процесса: текущее состояние (готов, выполняется, ожидает)
  • Регистры процессора: сохранённые значения регистров CPU
  • Информация о планировании: приоритет, указатели на очереди
  • Информация о памяти: базовые и предельные адреса памяти
Представление и обработка процессов
Архитектура ОС

Составляющие PCB (2/2)

  • Информация об учётных данных: владелец процесса, идентификаторы пользователя и группы
  • Информация о вводе-выводе: список открытых файлов, устройств
  • Информация о межпроцессном взаимодействии: сигналы, сообщения, разделяемая память
  • Статистика: время выполнения, время ожидания
Представление и обработка процессов
Архитектура ОС

2.2. Таблица процессов

Таблица процессов — структура данных, содержащая PCB всех процессов в системе. Позволяет ОС быстро находить и управлять любыми процессами.

Представление и обработка процессов
Архитектура ОС

Организация таблицы процессов

  • Массив фиксированного размера: простая реализация, но ограниченная по количеству процессов
  • Связанный список: динамическое выделение памяти, гибкость
  • Хеш-таблица: быстрый доступ по PID
  • Дерево: иерархическая организация процессов
Представление и обработка процессов
Архитектура ОС

3. Состояния процесса

3.1. Базовая модель состояний

В течение жизненного цикла процесс переходит между несколькими состояниями:

  • Создание (New) — процесс только что создан, ОС инициализирует PCB
  • Готов (Ready) — процесс готов к выполнению, ожидает выделения процессора
  • Выполнение (Running) — процесс активно выполняется на процессоре
Представление и обработка процессов
Архитектура ОС

Состояния процесса (продолжение)

  • Ожидание (Waiting/Blocked) — процесс ожидает события (ввода-вывода, сигнала, освобождения ресурса)
  • Завершение (Terminated) — процесс завершил выполнение, освобождаются ресурсы
Представление и обработка процессов
Архитектура ОС

3.2. Диаграмма состояний процесса

center

Представление и обработка процессов
Архитектура ОС

Переходы между состояниями

Переход Условие
New → Ready Инициализация завершена
Ready → Running Планировщик выбрал процесс
Running → Ready Исчерпан квант времени / вытеснение
Running → Waiting Запрос ввода-вывода / ожидание события
Waiting → Ready Событие наступило
Running → Terminated Завершение выполнения
Представление и обработка процессов
Архитектура ОС

4. Очереди процессов

4.1. Понятие очереди в ОС

Очередь — структура данных, организующая процессы в определённом порядке. Очереди используются для управления процессами в различных состояниях.

Каждый процесс в течение жизненного цикла перемещается между различными очередями.

Представление и обработка процессов
Архитектура ОС

4.2. Типы очередей процессов

  • Очередь готовых процессов (Ready Queue): содержит все процессы, готовые к выполнению и ожидающие выделения процессора
  • Очереди устройств (Device Queues): содержат процессы, ожидающие доступа к конкретным устройствам ввода-вывода
  • Очередь завершённых процессов: содержит процессы, завершившие выполнение, ожидающие освобождения ресурсов
Представление и обработка процессов
Архитектура ОС

4.3. Реализация очередей

Линейная очередь (FIFO):

  • First-In-First-Out
  • Простая реализация
  • Используется для базового планирования

Круговая очередь (Round Robin):

  • Каждый процесс получает квант времени
  • Вытесняющая многозадачность
  • Справедливое распределение CPU

Приоритетная очередь:

  • Процессы упорядочены по приоритету
  • Более сложная реализация
  • Приоритетная многозадачность

Многоуровневая очередь:

  • Несколько очередей с разными приоритетами
  • Процессы распределены по классам
  • Комбинация различных стратегий
Представление и обработка процессов
Архитектура ОС

5. Алгоритмы планирования процессов

5.1. Первый пришёл — первый обслужен (FCFS)

  • Простейший алгоритм планирования
  • Процессы обслуживаются в порядке поступления
  • Невытесняющий алгоритм
  • Может привести к «эффекту конвоя» — короткие процессы ждут длинный
Представление и обработка процессов
Архитектура ОС

5.2. Кратчайший процесс первым (SJF)

  • Выбирается процесс с кратчайшим ожидаемым временем выполнения
  • Оптимален по среднему времени ожидания
  • Требует знания или оценки длительности процессов
  • Сложность: как предсказать время выполнения?
Представление и обработка процессов
Архитектура ОС

Сравнение FCFS и SJF

FCFS:

  • Простота реализации
  • Справедливость по порядку
  • Эффект конвоя
  • Не учитывает длительность

SJF:

  • Минимальное среднее ожидание
  • Требует знания длительности
  • Голодание длинных процессов
  • Сложность оценки времени
Представление и обработка процессов
Архитектура ОС

5.3. Round Robin (RR)

  • Каждый процесс получает фиксированный квант времени (time quantum)
  • По истечении кванта процесс перемещается в конец очереди
  • Обеспечивает справедливое распределение процессорного времени
  • Хорошо работает для интерактивных систем

Выбор кванта времени — ключевой параметр:

  • Слишком малый → накладные расходы на переключение
  • Слишком большой → деградирует до FCFS
Представление и обработка процессов
Архитектура ОС

5.4. Приоритетное планирование

  • Каждый процесс имеет приоритет — числовое значение
  • Выполняется процесс с наивысшим приоритетом
  • Может быть вытесняющим и невытесняющим
  • Проблема: голодание низкоприоритетных процессов
  • Решение: старение (aging) — постепенное повышение приоритета
Представление и обработка процессов
Архитектура ОС

Сравнение алгоритмов планирования

Алгоритм Вытеснение Справедливость Сложность
FCFS Нет Низкая Низкая
SJF Нет/Да Средняя Высокая
RR Да Высокая Средняя
Приоритетное Нет/Да Средняя Средняя
Представление и обработка процессов
Архитектура ОС

6. Переключение контекста

6.1. Понятие контекста процесса

Контекст процесса — совокупность информации, необходимой для восстановления состояния процесса при переключении между процессами.

Переключение контекста — чистые накладные расходы: система не выполняет полезной работы во время переключения.

Представление и обработка процессов
Архитектура ОС

Составляющие контекста

  • Содержимое регистров процессора
  • Состояние программного счётчика (PC)
  • Содержимое стека
  • Информация о памяти (таблицы страниц)
  • Состояние флагов процессора
  • Указатели на открытые файлы и ресурсы
Представление и обработка процессов
Архитектура ОС

6.2. Процесс переключения контекста

  1. Сохранение контекста текущего процесса
  2. Обновление PCB текущего процесса
  3. Перемещение текущего процесса в соответствующую очередь
  4. Выбор нового процесса из очереди готовых
  5. Обновление PCB нового процесса
  6. Восстановление контекста нового процесса
  7. Передача управления новому процессу
Представление и обработка процессов
Архитектура ОС

Накладные расходы переключения контекста

Время переключения контекста зависит от:

  • Аппаратной поддержки (регистровый набор, кэш TLB)
  • Объёма сохраняемого состояния
  • Сложности структур данных ОС

Типичное время: от нескольких микросекунд до millisecond. Оптимизация переключения контекста — важная задача проектирования ОС.

Представление и обработка процессов
Архитектура ОС

7. Межпроцессное взаимодействие (IPC)

7.1. Совместное использование ресурсов

Процессы могут совместно использовать:

  • Разделяемую память
  • Файлы
  • Устройства ввода-вывода
  • Семафоры и другие объекты синхронизации

Корректная координация доступа к общим ресурсам — ключевая задача IPC.

Представление и обработка процессов
Архитектура ОС

7.2. Механизмы взаимодействия

Сигналы:

  • Асинхронные уведомления
  • Прерывание выполнения процесса
  • Ограниченная передача информации

Каналы (Pipes):

  • Однонаправленная связь
  • Родительско-потомские процессы
  • FIFO-очередь байтов

Очереди сообщений:

  • Структурированная передача данных
  • Сообщения имеют тип и приоритет
  • Сложные формы взаимодействия

Разделяемая память:

  • Наиболее эффективный обмен данными
  • Требует синхронизации доступа
  • Прямой доступ к общим областям памяти
Представление и обработка процессов
Архитектура ОС

Сравнение механизмов IPC

Механизм Скорость Сложность Направление
Сигналы Высокая Низкая Однонаправленное
Каналы Средняя Низкая Однонаправленное
Очереди сообщений Средняя Средняя Двунаправленное
Разделяемая память Высокая Высокая Двунаправленное
Представление и обработка процессов
Архитектура ОС

8. Потоки (Threads)

8.1. Понятие потока

Поток — легковесный процесс, выполняющийся в контексте процесса. Потоки одного процесса разделяют его ресурсы.

Каждый поток имеет:

  • Собственный программный счётчик
  • Собственный регистровый контекст
  • Собственный стек
Представление и обработка процессов
Архитектура ОС

Поток vs Процесс

Процесс:

  • Изолированное адресное пространство
  • Полный контекст выполнения
  • Тяжеловесный (дорогое создание)
  • Независимые ресурсы

Поток:

  • Общее адресное пространство
  • Минимальный контекст
  • Легковесный (быстрое создание)
  • Разделяемые ресурсы процесса
Представление и обработка процессов
Архитектура ОС

8.2. Преимущества многопоточности

  • Экономия ресурсов: потоки требуют меньше памяти и ресурсов ОС
  • Быстрое переключение: переключение между потоками быстрее, чем между процессами
  • Улучшенная производительность: параллельное выполнение задач на многоядерных CPU
  • Упрощённое взаимодействие: потоки могут напрямую обмениваться данными через общую память
Представление и обработка процессов
Архитектура ОС

8.3. Модели многопоточности

На уровне пользователя:

  • Потоки управляются библиотекой
  • ОС видит только один процесс
  • Быстрое переключение
  • Блокировка одного потока блокирует всех

На уровне ядра:

  • Потоки управляются ОС
  • Каждый поток имеет свой PCB
  • Более надёжная работа
  • Медленнее переключение
Представление и обработка процессов
Архитектура ОС

Гибридная модель

Комбинированная многопоточность:

  • Потоки уровня пользователя мультиплексируются на потоки уровня ядра
  • Совмещает преимущества обеих моделей
  • Используется в современных ОС (Linux, Windows)
Представление и обработка процессов
Архитектура ОС

Заключение

Понимание представления и обработки процессов — фундамент архитектуры ОС.

  • PCB и таблицы процессов — основные структуры данных ОС для управления процессами
  • Состояния процессов описывают жизненный цикл процесса
  • Очереди процессов обеспечивают эффективное управление и планирование
  • Алгоритмы планирования определяют порядок выделения CPU
  • Переключение контекста — необходимая, но дорогостоящая операция
Представление и обработка процессов
Архитектура ОС

Ключевые выводы лекции

  • Эффективное управление процессами требует сложных структур данных

  • Очереди играют центральную роль в организации процессов

  • Выбор алгоритма планирования влияет на производительность системы

  • Межпроцессное взаимодействие требует специальных механизмов синхронизации

  • Многопоточность предоставляет возможности для параллельного выполнения

  • Перспективы: энергосберегающее планирование, контейнеры, машинное обучение

Представление и обработка процессов
Архитектура ОС

Вопросы для самоконтроля

  1. Чем процесс отличается от программы?
  2. Какую информацию содержит PCB и для чего он нужен?
  3. Какие состояния может иметь процесс и какие переходы между ними возможны?
  4. Какие типы очередей используются в ОС и чем они отличаются?
  5. Сравните алгоритмы планирования FCFS, SJF, RR и приоритетное планирование.
  6. Что такое переключение контекста и почему оно создаёт накладные расходы?
  7. Какие механизмы межпроцессного взаимодействия существуют и в чём их различия?
  8. В чём отличие потока от процесса?
  9. Какие модели многопоточности существуют и каковы их достоинства и недостатки?
  10. Что такое «эффект конвоя» и как он возникает?
Представление и обработка процессов
Архитектура ОС

Рекомендуемые ресурсы

Основная литература:

  1. Таненбаум Э., Бос Х. Современные операционные системы. 4-е изд.
  2. Столлингс В. Операционные системы. 9-е изд.

Дополнительная литература:

  1. Silberschatz A., Galvin P., Gagne G. Operating System Concepts. 10th ed.
  2. Love R. Linux Kernel Development. 3rd ed.
Представление и обработка процессов

Переходим к плану лекции. Обозначьте структуру — сегодня охватываем путь от базового понятия процесса до потоков. Студенты должны понимать логику: от простого к сложному.

Введение задаёт мотивацию. Подчеркните: без понимания процессов невозможно разбираться ни в планировании, ни в синхронизации, ни в памяти. Это фундамент всей архитектуры ОС.

Начинаем с определения процесса. Приведите пример: браузер, текстовый редактор — каждый запущенный экземпляр программы является процессом. Акцент: процесс — это не просто код, а код + данные + стек + ресурсы.

Ключевое сравнение. Аналогия: программа — это рецепт на бумаге, процесс — повар, который готовит по этому рецепту. Один рецепт могут использовать несколько поваров одновременно.

Переходим к внутреннему устройству. PCB — «паспорт» процесса, без него ОС не может управлять процессом. Подчеркните: PCB создаётся при рождении процесса и уничтожается при смерти.

Разбираем содержимое PCB по частям. PID — это как паспортный номер, состояние — «где сейчас находится» процесс, регистры — для возобновления выполнения, память — границы адресного пространства.

Продолжение PCB. Учётные данные определяют права доступа, I/O-информация — открытые файлы и устройства, статистика нужна для учёта ресурсов. Всё это хранится в одной структуре.

Таблица процессов — это коллекция всех PCB. Подчеркните: когда мы говорим «ОС управляет процессами», она работает именно через таблицу процессов. В Linux её можно увидеть через /proc.

Сравните подходы к организации таблицы. Массив — проще, но ограничен; связный список — гибче; хеш-таблица — быстрый поиск по PID; дерево — отражает иерархию «родитель-потомок». В реальных ОС используется комбинация.

Начинаем жизненный цикл процесса. Подчеркните: процесс не существует в одном состоянии — он постоянно переходит между состояниями. Это как разгрузка в аэропорту: регистрация → ожидание → полёт.

Два оставшихся состояния. Ожидание — процесс добровольно отдаёт CPU (ждёт I/O). Завершение — процесс выполнил задачу или убит, ресурсы освобождаются.

Диаграмма — визуальное отображение модели состояний. Обратите внимание студентов на направления стрелок. Не все переходы возможны: например, нельзя перейти напрямую из Waiting в Running.

Таблица переходов — формализация диаграммы. Акцент: переход Running → Ready происходит при вытеснении, а Running → Waiting — по инициативе самого процесса. Это разные механизмы.

Очереди — механизм, через который ОС реализует состояния. Каждый процесс «путешествует» по очередям на протяжении жизни. Подчеркните связь с предыдущей темой: состояние процесса = очередь, в которой он находится.

Три основных типа очередей. Ready Queue — самая важная, из неё планировщик берёт процессы. Device Queues привязаны к конкретным устройствам. Процесс может одновременно находиться в нескольких очередях.

Сравниваем реализации. FIFO — база, Round Robin — основа многозадачности, приоритетная — для систем реального времени, многоуровневая — наиболее гибкая, используется в современных ОС.

Начинаем алгоритмы планирования. FCFS — самый простой, но неэффективный. Обязательно объясните «эффект конвоя» на примере: один длинный процесс блокирует множество коротких.

SJF теоретически оптимален, но на практике неприменим — ОС не знает заранее длительность процесса. Объясните подход оценки: экспоненциальное среднее предыдущих «порций» выполнения.

Наглядное сравнение двух базовых алгоритмов. FCFS проще, но страдает эффектом конвоя. SJF лучше по метрикам, но практическая реализация затруднена. Оба могут приводить к несправедливости.

Round Robin — самый распространённый алгоритм для интерактивных систем. Ключевой параметр — квант времени: обычно 10–100 мс. Слишком малый квант — потери на переключение, слишком большой — снижение отзывчивости.

Приоритетное планирование гибко, но создаёт проблему голодания. Решение — старение (aging): чем дольше процесс ждёт, тем выше его приоритет. В Linux используется вариант — Completely Fair Scheduler.

Сводная таблица — резюме по алгоритмам. RR — лучший баланс справедливости и сложности. В реальных ОС используются гибридные подходы: многоуровневые очереди с обратной связью.

Переключение контекста — скрытая стоимость многозадачности. Подчеркните: во время переключения CPU не выполняет полезную работу. Цель — минимизировать накладные расходы.

Перечисляем компоненты контекста. Регистры и PC — минимальный набор для возобновления, остальное — для корректной работы с памятью и ресурсами. Всё это хранится в PCB.

Пошаговый процесс переключения. Шаги 1–3 — «заморозка» текущего процесса, шаги 4–6 — «разморозка» нового. Обратите внимание: шаг 3 и 4 связаны с очередями — планировщик выбирает из ready queue.

Накладные расходы — практический аспект. Типичное время: 1–10 мкс. На многоядерных системах меньше. Аппаратная поддержка (несколько наборов регистров) значительно снижает overhead.

Переходим к IPC — как процессы взаимодействуют. Проблема: процессы изолированы, но часто нуждаются в обмене данными. IPC — набор механизмов для координации и обмена.

Четыре основных механизма. Сигналы и каналы — простые, для базовых сценариев. Очереди сообщений и разделяемая память — для интенсивного обмена. Разделяемая память — самая быстрая, но требует синхронизации.

Сравнительная таблица помогает выбрать механизм под задачу. Для простых уведомлений — сигналы, для потоковых данных — каналы, для структурированного обмена — очереди, для максимальной скорости — разделяемая память.

Потоки — «легковесные» процессы. Ключевая идея: потоки одного процесса разделяют адресное пространство, что делает создание и переключение намного дешевле. Но возникает проблема синхронизации.

Ключевое сравнение. Процесс — тяжеловесный, изолированный, дорого стоит создание. Поток — лёгкий, разделяет память с другими потоками процесса, создаётся быстро. Выбор между процессами и потоками зависит от задачи.

Преимущества многопоточности — почему потоки так важны. Параллелизм на многоядерных CPU, отзывчивость UI, экономия памяти. Но добавляется сложность: гонки данных, deadlock'и.

Две базовые модели. Пользовательские потоки — быстрые, но блокировка одного блокирует весь процесс. Потоки ядра — надёжнее, но медленнее. Каждая модель — компромисс.

Гибридная модель — лучшее из двух миров. N пользовательских потоков мультиплексируются на M потоков ядра (N:M). Используется в Linux (NPTL) и Windows. Это индустриальный стандарт.

Подводим итоги. PCB — паспорт процесса, состояния — жизненный цикл, очереди — механизм управления, планирование — стратегия распределения CPU. Всё взаимосвязано.

Ключевые выводы на два столбца. Левый — управление и планирование, правый — взаимодействие и перспективы. Подчеркните: эти темы — основа для следующих лекций по синхронизации и памяти.

Вопросы для самопроверки. Порекомендуйте студентам ответить на каждый вопрос письменно — это лучший способ закрепить материал. Обратите внимание на вопрос 10 — «эффект конвоя» часто встречается на экзаменах.

Рекомендованная литература. Таненбаум — лучший учебник для данного курса, Silberschatz («Динозавр») — классика. Love — для тех, кто хочет разобраться в реализации Linux. Все книги есть в библиотеке.